The Converge programming language

نویسنده

  • Laurence Tratt
چکیده

class ML1_Element { name : String; inv nonempty_name: name != null and name.len() > 0 } Note that the DSL fragment is written in an entirely different syntax than Converge itself. Currently DSL blocks are automatically tokenized by the Converge compiler using its default tokenization rules — this is not a fundamental requirement of the technique, but a peculiarity of the current implementation. More sophisticated implementations might choose to defer tokenization to the DSL implementation function. However using the Converge tokenizer has the advantage that normal Converge code can be embedded inside the DSL itself assuming an appropriate link from the DSL’s grammar to the Converge grammar. 5.1 DSL implementation functions DSL implementation functions follow a largely similar sequence of steps in order to translate the input tokens into an ITree: 1. Alter the input tokens as necessary. Since DSL’s often use keywords that are not part of the main Converge grammar, such alterations mostly take the form of replacing ID tokens with specific keyword tokens. 2. Parse the input tokens according to the DSL’s grammar. 3. Traverse the parse tree, translating it into an ITree. Section 6 explores these steps in greater detail via a concrete example.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Compile-time meta-programming in Converge

Compile-time meta-programming allows programs to be constructed by the user at compile-time. Few modern languages are capable of compile-time meta-programming, and of those that do, many of the most powerful are statically typed functional languages. In this paper I present the dynamically typed, object orientated language Converge which allows compile-time meta-programming in the spirit of Tem...

متن کامل

Model transformations in Converge

Model transformations are currently the focus of much interest and research due to the OMG’s QVT initiative. Current proposals for model transformation languages can be divided into two main camps: those taking a ‘declarative’ approach, and those opting for an ‘imperative’ approach. In this paper we detail an imperative, meta-circular, object orientated, pattern matching programming language Co...

متن کامل

Convergence rate examples and theory

If you use lfe for various tasks, you will notice that some estimations converge fast, whereas others converge slowly. Convergence rate of the methods used by lfe is not a walk in the park. Here are some examples.

متن کامل

Optimum Design of Sewer Collection Networks

Various methods have been used to economically design wastewater and stormwater collection systems. In this article, Discrete Differential Dynamic Programming (DDDP) which is a subsection of dynamic programming (DP) was used. For each pipe network, various alternatives such as depth and slope of pipe laying and various diameters could be considered to satisfy hydraulic and engineering constrain...

متن کامل

Name Management: A Catalyst for Persistence and Interoperability

The integration of persistence and interoperability mechanisms into modern programming languages has important implications for software engineering. Research in these areas, however, has neglected significant name management-related issues. In this paper, we describe some important name management issues that arise when persistence and interoperability converge with programming languages. We a...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2005